package cn.janyd.jmall.system.rpc.oauth;

import cn.janyd.common.core.vo.CommonResult;
import cn.janyd.jmall.system.rpc.oauth.dto.AccessTokenRespDTO;
import cn.janyd.jmall.system.rpc.oauth.dto.CreateAccessTokenReqDTO;
import cn.janyd.jmall.system.rpc.oauth.dto.RefreshAccessTokenReqDTO;
import cn.janyd.jmall.system.rpc.oauth.dto.RemoveTokenReqDTO;

/**
 * @author janyd
 * @since 2020/8/17 21:14
 */
public interface Oauth2RpcService {

    /**
     * 创建AccessToken
     *
     * @param createAccessToken 创建AccessToken信息
     * @return AccessToken信息
     */
    CommonResult<AccessTokenRespDTO> createAccessToken(CreateAccessTokenReqDTO createAccessToken);

    /**
     * 校验AccessToken合法性
     *
     * @param accessToken 令牌
     * @return AccessToken信息
     */
    CommonResult<AccessTokenRespDTO> checkAccessToken(String accessToken);

    /**
     * 刷新AccessToken
     *
     * @param refreshAccessTokenReq 刷新AcccessToken信息
     * @return 新的AccessToken
     */
    CommonResult<AccessTokenRespDTO> refreshAccessToken(RefreshAccessTokenReqDTO refreshAccessTokenReq);

    /**
     * 删除Token
     *
     * @param removeTokenReq 删除Token信息
     * @return 是否成功
     */
    CommonResult<Boolean> removeToken(RemoveTokenReqDTO removeTokenReq);
}
